// 定义一个需要监听变化的数组
let obarr = [22, 33, 34];

// 来复制一份数组的原型方法,防止污染原生数组方法
const arrayProto = Array.prototype;
const arrayMethods = Object.create(arrayProto);

// 我们先把 arrayMethods 对象上的 push 转换为观察者对象
Object.defineProperty(arrayMethods, 'push', {
  value: function mutator(value) {
    console.log(value);
    console.log('obarr.push会走这里');
  },
});

obarr.__proto__ = arrayMethods;

obarr.push(1);
obarr.push(2);
obarr.push(3);
obarr.push(4);
